//415. 字符串相加
//已解答
//简单
//相关标签
//premium lock icon
//相关企业
//给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和并同样以字符串形式返回。
//
//你不能使用任何內建的用于处理大整数的库（比如 BigInteger）， 也不能直接将输入的字符串转换为整数形式
class Solution {
public:
    int AddItem(int a, int b, int& next)
    {
        int sum = a + b + next;
        if (sum >= 10)
        {
            sum -= 10;
            next = 1;
        }
        else next = 0;
        return sum;
    }
    string addStrings(string num1, string num2) {
        string retStr;
        int next = 0, sum = 0;
        int i = num1.size() - 1, j = num2.size() - 1;
        while (i >= 0 && j >= 0)
        {
            sum = AddItem(num1[i--] - '0', num2[j--] - '0', next);
            retStr.push_back(sum + '0');
        }
        while (i >= 0)
        {
            sum = AddItem(num1[i--] - '0', 0, next);
            retStr.push_back(sum + '0');
            if (i < 0) retStr[num1.size()] = '/0';
        }
        while (j >= 0)
        {
            sum = AddItem(0, num2[j--] - '0', next);
            retStr.push_back(sum + '0');
            if (j < 0) retStr[num2.size()] = '/0';
        }
        if (next != 0) retStr.push_back(next + '0');
        std::reverse(retStr.begin(), retStr.end());
        return retStr;
    }
};